circularr
Circular fixed size array.
Install
$ yarn add circularr
Usage
import Circularr from 'circularr'
const arrFrom = Circularr.from([1, 2, 3, 4, 5])
const arr = new Circularr(3)
arr.fill(0)
arr.shift(16)
arr.shift(32)
console.log(...arr)
Circularr
implements iterable
protocol, so it can be used with any standard iterable syntax
const array = Circularr.from([1, 2, 3])
const [firstValue] = array
const copyToArray = [...array]
for (let value of array) {
console.log(value)
}
API
fill
Fills the array using value, effectively resetting it.
fill(value: T): this
const array = new Circularr(3)
array.fill(0)
shift
Pushes value to the end of the array, wherein the first value gets popped out and returned.
shift(value: T): T
const array = new Circularr(3).fill(0)
array.shift(8)
array.shift(16)
array.shift(32)
array.shift(64)
array.length
unshift
Pushes the value to the front of the array, popping the last value out.
unshift(value: T): T
const array = new Circularr(3).fill(0)
array.unshift(8)
array.unshift(16)
array.unshift(32)
array.unshift(64)
array.length
slice
Does work the same way as Array.slice
.
slice(startIndex?: number, endIndex?: number): Circularr<T>
const array = Circularr.from([1, 2, 3, 4])
const sliced = array.slice(1, 3)
trim
Removes undefined
values from both ends.
trim(): Circularr<T>
const array = new Circularr<number>(5)
array.shift(1)
array.shift(2)
const trimmed = array.trim()
at
Returns element at the index or undefined
for negative or overflow indices.
at(index: number): T | undefined
const array = new Circularr<number>(5)
array.shift(1)
array.shift(2)
const val0 = array.at(0)
const val1 = array.at(3)
const val2 = array.at(4)
const val3 = array.at(5)
wrapAt
Returns element at the index. For negative and overflow indices - the index will be wrapped around, and correct value will be returned.
wrapAt(index: number): T | undefined
const array = new Circularr<number>(5)
array.shift(1)
array.shift(2)
const val0 = array.wrapAt(0)
const val1 = array.wrapAt(3)
const val2 = array.wrapAt(4)
const val3 = array.wrapAt(8)
const val3 = array.wrapAt(9)